! function(a, b) { "function" == typeof define && (define.amd || define.cmd) ? define(function() {
        return b(a) }) : b(a, !0) }(this, function(a, b) {
    function c(b, c, d) { a.WeixinJSBridge ? WeixinJSBridge.invoke(b, e(c), function(a) { h(b, a, d) }) : k(b, d) }

    function d(b, c, d) { a.WeixinJSBridge ? WeixinJSBridge.on(b, function(a) { d && d.trigger && d.trigger(a), h(b, a, c) }) : d ? k(b, d) : k(b, c) }

    function e(a) {
        return a = a || {}, a.appId = D.appId, a.verifyAppId = D.appId, a.verifySignType = "sha1", a.verifyTimestamp = D.timestamp + "", a.verifyNonceStr = D.nonceStr, a.verifySignature = D.signature, a }

    function f(a) {
        return { timeStamp: a.timestamp + "", nonceStr: a.nonceStr, "package": a["package"], paySign: a.paySign, signType: a.signType || "SHA1" } }

    function g(a) {
        return a.postalCode = a.addressPostalCode, delete a.addressPostalCode, a.provinceName = a.proviceFirstStageName, delete a.proviceFirstStageName, a.cityName = a.addressCitySecondStageName, delete a.addressCitySecondStageName, a.countryName = a.addressCountiesThirdStageName, delete a.addressCountiesThirdStageName, a.detailInfo = a.addressDetailInfo, delete a.addressDetailInfo, a }

    function h(a, b, c) { "openEnterpriseChat" == a && (b.errCode = b.err_code), delete b.err_code, delete b.err_desc, delete b.err_detail;
        var d = b.errMsg;
        d || (d = b.err_msg, delete b.err_msg, d = i(a, d), b.errMsg = d), c = c || {}, c._complete && (c._complete(b), delete c._complete), d = b.errMsg || "", D.debug && !c.isInnerInvoke && alert(JSON.stringify(b));
        var e = d.indexOf(":"),
            f = d.substring(e + 1);
        switch (f) {
            case "ok":
                c.success && c.success(b);
                break;
            case "cancel":
                c.cancel && c.cancel(b);
                break;
            default:
                c.fail && c.fail(b) }
        c.complete && c.complete(b) }

    function i(a, b) {
        var c = a,
            d = q[c];
        d && (c = d);
        var e = "ok";
        if (b) {
            var f = b.indexOf(":");
            e = b.substring(f + 1), "confirm" == e && (e = "ok"), "failed" == e && (e = "fail"), -1 != e.indexOf("failed_") && (e = e.substring(7)), -1 != e.indexOf("fail_") && (e = e.substring(5)), e = e.replace(/_/g, " "), e = e.toLowerCase(), ("access denied" == e || "no permission to execute" == e) && (e = "permission denied"), "config" == c && "function not exist" == e && (e = "ok"), "" == e && (e = "fail") }
        return b = c + ":" + e }

    function j(a) {
        if (a) {
            for (var b = 0, c = a.length; c > b; ++b) {
                var d = a[b],
                    e = p[d];
                e && (a[b] = e) }
            return a } }

    function k(a, b) {
        if (!(!D.debug || b && b.isInnerInvoke)) {
            var c = q[a];
            c && (a = c), b && b._complete && delete b._complete, console.log('"' + a + '",', b || "") } }

    function l(a) {
        if (!(v || w || D.debug || "6.0.2" > A || C.systemType < 0)) {
            var b = new Image;
            C.appId = D.appId, C.initTime = B.initEndTime - B.initStartTime, C.preVerifyTime = B.preVerifyEndTime - B.preVerifyStartTime, I.getNetworkType({ isInnerInvoke: !0, success: function(a) { C.networkType = a.networkType;
                    var c = "https://open.weixin.qq.com/sdk/report?v=" + C.version + "&o=" + C.isPreVerifyOk + "&s=" + C.systemType + "&c=" + C.clientVersion + "&a=" + C.appId + "&n=" + C.networkType + "&i=" + C.initTime + "&p=" + C.preVerifyTime + "&u=" + C.url;
                    b.src = c } }) } }

    function m() {
        return (new Date).getTime() }

    function n(b) { x && (a.WeixinJSBridge ? b() : r.addEventListener && r.addEventListener("WeixinJSBridgeReady", b, !1)) }

    function o() { I.invoke || (I.invoke = function(b, c, d) { a.WeixinJSBridge && WeixinJSBridge.invoke(b, e(c), d) }, I.on = function(b, c) { a.WeixinJSBridge && WeixinJSBridge.on(b, c) }) }
    if (!a.jWeixin) {
        var p = { config: "preVerifyJSAPI", onMenuShareTimeline: "menu:share:timeline", onMenuShareAppMessage: "menu:share:appmessage", onMenuShareQQ: "menu:share:qq", onMenuShareWeibo: "menu:share:weiboApp", onMenuShareQZone: "menu:share:QZone", previewImage: "imagePreview", getLocation: "geoLocation", openProductSpecificView: "openProductViewWithPid", addCard: "batchAddCard", openCard: "batchViewCard", chooseWXPay: "getBrandWCPayRequest", openEnterpriseRedPacket: "getRecevieBizHongBaoRequest", startSearchBeacons: "startMonitoringBeacons", stopSearchBeacons: "stopMonitoringBeacons", onSearchBeacons: "onBeaconsInRange", consumeAndShareCard: "consumedShareCard", openAddress: "editAddress" },
            q = function() {
                var a = {};
                for (var b in p) a[p[b]] = b;
                return a }(),
            r = a.document,
            s = r.title,
            t = navigator.userAgent.toLowerCase(),
            u = navigator.platform.toLowerCase(),
            v = !(!u.match("mac") && !u.match("win")),
            w = -1 != t.indexOf("wxdebugger"),
            x = -1 != t.indexOf("micromessenger"),
            y = -1 != t.indexOf("android"),
            z = -1 != t.indexOf("iphone") || -1 != t.indexOf("ipad"),
            A = function() {
                var a = t.match(/micromessenger\/(\d+\.\d+\.\d+)/) || t.match(/micromessenger\/(\d+\.\d+)/);
                return a ? a[1] : "" }(),
            B = { initStartTime: m(), initEndTime: 0, preVerifyStartTime: 0, preVerifyEndTime: 0 },
            C = { version: 1, appId: "", initTime: 0, preVerifyTime: 0, networkType: "", isPreVerifyOk: 1, systemType: z ? 1 : y ? 2 : -1, clientVersion: A, url: encodeURIComponent(location.href) },
            D = {},
            E = { _completes: [] },
            F = { state: 0, data: {} };
        n(function() { B.initEndTime = m() });
        var G = !1,
            H = [],
            I = { config: function(a) { D = a, k("config", a);
                    var b = D.check === !1 ? !1 : !0;
                    n(function() {
                        if (b) c(p.config, { verifyJsApiList: j(D.jsApiList) }, function() { E._complete = function(a) { B.preVerifyEndTime = m(), F.state = 1, F.data = a }, E.success = function(a) { C.isPreVerifyOk = 0 }, E.fail = function(a) { E._fail ? E._fail(a) : F.state = -1 };
                            var a = E._completes;
                            return a.push(function() { l() }), E.complete = function(b) {
                                for (var c = 0, d = a.length; d > c; ++c) a[c]();
                                E._completes = [] }, E }()), B.preVerifyStartTime = m();
                        else { F.state = 1;
                            for (var a = E._completes, d = 0, e = a.length; e > d; ++d) a[d]();
                            E._completes = [] } }), D.beta && o() }, ready: function(a) { 0 != F.state ? a() : (E._completes.push(a), !x && D.debug && a()) }, error: function(a) { "6.0.2" > A || (-1 == F.state ? a(F.data) : E._fail = a) }, checkJsApi: function(a) {
                    var b = function(a) {
                        var b = a.checkResult;
                        for (var c in b) {
                            var d = q[c];
                            d && (b[d] = b[c], delete b[c]) }
                        return a };
                    c("checkJsApi", { jsApiList: j(a.jsApiList) }, function() {
                        return a._complete = function(a) {
                            if (y) {
                                var c = a.checkResult;
                                c && (a.checkResult = JSON.parse(c)) }
                            a = b(a) }, a }()) }, onMenuShareTimeline: function(a) { d(p.onMenuShareTimeline, { complete: function() { c("shareTimeline", { title: a.title || s, desc: a.title || s, img_url: a.imgUrl || "", link: a.link || location.href, type: a.type || "link", data_url: a.dataUrl || "" }, a) } }, a) }, onMenuShareAppMessage: function(a) { d(p.onMenuShareAppMessage, { complete: function() { c("sendAppMessage", { title: a.title || s, desc: a.desc || "", link: a.link || location.href, img_url: a.imgUrl || "", type: a.type || "link", data_url: a.dataUrl || "" }, a) } }, a) }, onMenuShareQQ: function(a) { d(p.onMenuShareQQ, { complete: function() { c("shareQQ", { title: a.title || s, desc: a.desc || "", img_url: a.imgUrl || "", link: a.link || location.href }, a) } }, a) }, onMenuShareWeibo: function(a) { d(p.onMenuShareWeibo, { complete: function() { c("shareWeiboApp", { title: a.title || s, desc: a.desc || "", img_url: a.imgUrl || "", link: a.link || location.href }, a) } }, a) }, onMenuShareQZone: function(a) { d(p.onMenuShareQZone, { complete: function() { c("shareQZone", { title: a.title || s, desc: a.desc || "", img_url: a.imgUrl || "", link: a.link || location.href }, a) } }, a) }, startRecord: function(a) { c("startRecord", {}, a) }, stopRecord: function(a) { c("stopRecord", {}, a) }, onVoiceRecordEnd: function(a) { d("onVoiceRecordEnd", a) }, playVoice: function(a) { c("playVoice", { localId: a.localId }, a) }, pauseVoice: function(a) { c("pauseVoice", { localId: a.localId }, a) }, stopVoice: function(a) { c("stopVoice", { localId: a.localId }, a) }, onVoicePlayEnd: function(a) { d("onVoicePlayEnd", a) }, uploadVoice: function(a) { c("uploadVoice", { localId: a.localId, isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1 }, a) }, downloadVoice: function(a) { c("downloadVoice", { serverId: a.serverId, isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1 }, a) }, translateVoice: function(a) { c("translateVoice", { localId: a.localId, isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1 }, a) }, chooseImage: function(a) { c("chooseImage", { scene: "1|2", count: a.count || 9, sizeType: a.sizeType || ["original", "compressed"], sourceType: a.sourceType || ["album", "camera"] }, function() {
                        return a._complete = function(a) {
                            if (y) {
                                var b = a.localIds;
                                b && (a.localIds = JSON.parse(b)) } }, a }()) }, getLocation: function(a) {}, previewImage: function(a) { c(p.previewImage, { current: a.current, urls: a.urls }, a) }, uploadImage: function(a) { c("uploadImage", { localId: a.localId, isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1 }, a) }, downloadImage: function(a) { c("downloadImage", { serverId: a.serverId, isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1 }, a) }, getLocalImgData: function(a) { G === !1 ? (G = !0, c("getLocalImgData", { localId: a.localId }, function() {
                        return a._complete = function(a) {
                            if (G = !1, H.length > 0) {
                                var b = H.shift();
                                wx.getLocalImgData(b) } }, a }())) : H.push(a) }, getNetworkType: function(a) {
                    var b = function(a) {
                        var b = a.errMsg;
                        a.errMsg = "getNetworkType:ok";
                        var c = a.subtype;
                        if (delete a.subtype, c) a.networkType = c;
                        else {
                            var d = b.indexOf(":"),
                                e = b.substring(d + 1);
                            switch (e) {
                                case "wifi":
                                case "edge":
                                case "wwan":
                                    a.networkType = e;
                                    break;
                                default:
                                    a.errMsg = "getNetworkType:fail" } }
                        return a };
                    c("getNetworkType", {}, function() {
                        return a._complete = function(a) { a = b(a) }, a }()) }, openLocation: function(a) { c("openLocation", { latitude: a.latitude, longitude: a.longitude, name: a.name || "", address: a.address || "", scale: a.scale || 28, infoUrl: a.infoUrl || "" }, a) }, getLocation: function(a) { a = a || {}, c(p.getLocation, { type: a.type || "wgs84" }, function() {
                        return a._complete = function(a) { delete a.type }, a }()) }, hideOptionMenu: function(a) { c("hideOptionMenu", {}, a) }, showOptionMenu: function(a) { c("showOptionMenu", {}, a) }, closeWindow: function(a) { a = a || {}, c("closeWindow", {}, a) }, hideMenuItems: function(a) { c("hideMenuItems", { menuList: a.menuList }, a) }, showMenuItems: function(a) { c("showMenuItems", { menuList: a.menuList }, a) }, hideAllNonBaseMenuItem: function(a) { c("hideAllNonBaseMenuItem", {}, a) }, showAllNonBaseMenuItem: function(a) { c("showAllNonBaseMenuItem", {}, a) }, scanQRCode: function(a) { a = a || {}, c("scanQRCode", { needResult: a.needResult || 0, scanType: a.scanType || ["qrCode", "barCode"] }, function() {
                        return a._complete = function(a) {
                            if (z) {
                                var b = a.resultStr;
                                if (b) {
                                    var c = JSON.parse(b);
                                    a.resultStr = c && c.scan_code && c.scan_code.scan_result } } }, a }()) }, openAddress: function(a) { c(p.openAddress, {}, function() {
                        return a._complete = function(a) { a = g(a) }, a }()) }, openProductSpecificView: function(a) { c(p.openProductSpecificView, { pid: a.productId, view_type: a.viewType || 0, ext_info: a.extInfo }, a) }, addCard: function(a) {
                    for (var b = a.cardList, d = [], e = 0, f = b.length; f > e; ++e) {
                        var g = b[e],
                            h = { card_id: g.cardId, card_ext: g.cardExt };
                        d.push(h) }
                    c(p.addCard, { card_list: d }, function() {
                        return a._complete = function(a) {
                            var b = a.card_list;
                            if (b) { b = JSON.parse(b);
                                for (var c = 0, d = b.length; d > c; ++c) {
                                    var e = b[c];
                                    e.cardId = e.card_id, e.cardExt = e.card_ext, e.isSuccess = e.is_succ ? !0 : !1, delete e.card_id, delete e.card_ext, delete e.is_succ }
                                a.cardList = b, delete a.card_list } }, a }()) }, chooseCard: function(a) { c("chooseCard", { app_id: D.appId, location_id: a.shopId || "", sign_type: a.signType || "SHA1", card_id: a.cardId || "", card_type: a.cardType || "", card_sign: a.cardSign, time_stamp: a.timestamp + "", nonce_str: a.nonceStr }, function() {
                        return a._complete = function(a) { a.cardList = a.choose_card_info, delete a.choose_card_info }, a }()) }, openCard: function(a) {
                    for (var b = a.cardList, d = [], e = 0, f = b.length; f > e; ++e) {
                        var g = b[e],
                            h = { card_id: g.cardId, code: g.code };
                        d.push(h) }
                    c(p.openCard, { card_list: d }, a) }, consumeAndShareCard: function(a) { c(p.consumeAndShareCard, { consumedCardId: a.cardId, consumedCode: a.code }, a) }, chooseWXPay: function(a) { c(p.chooseWXPay, f(a), a) }, openEnterpriseRedPacket: function(a) { c(p.openEnterpriseRedPacket, f(a), a) }, startSearchBeacons: function(a) { c(p.startSearchBeacons, { ticket: a.ticket }, a) }, stopSearchBeacons: function(a) { c(p.stopSearchBeacons, {}, a) }, onSearchBeacons: function(a) { d(p.onSearchBeacons, a) }, openEnterpriseChat: function(a) { c("openEnterpriseChat", { useridlist: a.userIds, chatname: a.groupName }, a) } },
            J = 1,
            K = {};
        return r.addEventListener("error", function(a) {
            if (!y) {
                var b = a.target,
                    c = b.tagName,
                    d = b.src;
                if ("IMG" == c || "VIDEO" == c || "AUDIO" == c || "SOURCE" == c) {
                    var e = -1 != d.indexOf("wxlocalresource://");
                    if (e) { a.preventDefault(), a.stopPropagation();
                        var f = b["wx-id"];
                        if (f || (f = J++, b["wx-id"] = f), K[f]) return;
                        K[f] = !0, wx.ready(function() { wx.getLocalImgData({ localId: d, success: function(a) { b.src = a.localData } }) }) } } } }, !0), r.addEventListener("load", function(a) {
            if (!y) {
                var b = a.target,
                    c = b.tagName;
                b.src;
                if ("IMG" == c || "VIDEO" == c || "AUDIO" == c || "SOURCE" == c) {
                    var d = b["wx-id"];
                    d && (K[d] = !1) } } }, !0), b && (a.wx = a.jWeixin = I), I } });
